bitkeeper revision 1.178.2.1 (3ead095fnpL5TUgwn6hztSXztuDhxQ)
authorjws@cairnwell.research <jws@cairnwell.research>
Mon, 28 Apr 2003 10:58:39 +0000 (10:58 +0000)
committerjws@cairnwell.research <jws@cairnwell.research>
Mon, 28 Apr 2003 10:58:39 +0000 (10:58 +0000)
PS/2 keyboard and mouse support

14 files changed:
.rootkeys
xen/arch/i386/entry.S
xen/drivers/char/xen_kbd.c
xen/include/hypervisor-ifs/hypervisor-if.h
xen/include/hypervisor-ifs/kbd.h [new file with mode: 0644]
xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in
xenolinux-2.4.21-pre4-sparse/arch/xeno/defconfig
xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in [new file with mode: 0644]
xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile [new file with mode: 0644]
xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c [new file with mode: 0644]
xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c
xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h
xenolinux-2.4.21-pre4-sparse/include/asm-xeno/keyboard.h [new file with mode: 0644]
xenolinux-2.4.21-pre4-sparse/mkbuildtree

index 41c75073815907d92a47f1af1058b239a2c88e77..086d7f083e4cac48190765be22b71ebcc132cd87 100644 (file)
--- a/.rootkeys
+++ b/.rootkeys
 3ddb79c3uPGcP_l_2xyGgBSWd5aC-Q xen/include/asm-i386/unaligned.h
 3ddb79c2YTaZwOqWin9-QNgHge5RVw xen/include/hypervisor-ifs/block.h
 3ddb79c25UE59iu4JJcbRalx95mvcg xen/include/hypervisor-ifs/hypervisor-if.h
+3ead095dE_VF-QA88rl_5cWYRWtRVQ xen/include/hypervisor-ifs/kbd.h
 3ddb79c2oRPrzClk3zbTkRHlpumzKA xen/include/hypervisor-ifs/network.h
 3ddb79c4qbCoOFHrv9sCGshbWzBVlQ xen/include/scsi/scsi.h
 3ddb79c4R4iVwqIIeychVQYmIH4FUg xen/include/scsi/scsi_ioctl.h
 3e5a4e66qRlSTcjafidMB6ulECADvg xenolinux-2.4.21-pre4-sparse/arch/xeno/vmlinux.lds
 3e5a4e668yELUdtr3HiJZBIqxqUyuA xenolinux-2.4.21-pre4-sparse/drivers/block/Config.in
 3e5a4e66mrtlmV75L1tjKDg8RaM5gA xenolinux-2.4.21-pre4-sparse/drivers/block/ll_rw_blk.c
+3ead095dEkj9JJWYYBnbvW3OYbKFxg xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
+3ead095d00j61GCBaYdu_SwmY-vdSQ xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
+3ead095dPseRoFELVf_xcnVXjq02hw xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c
 3e5a4e66rw65CxyolW9PKz4GG42RcA xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c
 3e5a4e669uzIE54VwucPYtGwXLAbzA xenolinux-2.4.21-pre4-sparse/fs/exec.c
 3e5a4e66wbeCpsJgVf_U8Jde-CNcsA xenolinux-2.4.21-pre4-sparse/include/asm-xeno/bugs.h
 3e5a4e677VBavzM1UZIEcH1B-RlXMA xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h
 3e5a4e67Ulv-Ll8Zp4j2GwMwQ8aAXQ xenolinux-2.4.21-pre4-sparse/include/asm-xeno/io.h
 3e5a4e673p7PEOyHFm3nHkYX6HQYBg xenolinux-2.4.21-pre4-sparse/include/asm-xeno/irq.h
+3ead095db_LRUXnxaqs0dA1DWhPoQQ xenolinux-2.4.21-pre4-sparse/include/asm-xeno/keyboard.h
 3e5a4e67zoNch27qYhEBpr2k6SABOg xenolinux-2.4.21-pre4-sparse/include/asm-xeno/mmu.h
 3e5a4e678ddsQOpbSiRdy1GRcDc9WA xenolinux-2.4.21-pre4-sparse/include/asm-xeno/mmu_context.h
 3e7270deQqtGPSnFxcW4AvJZuTUWfg xenolinux-2.4.21-pre4-sparse/include/asm-xeno/multicall.h
index 3f9c8c99bddf129993bfd56543c925410aeab980..afb4a5c54c740b19d93f25ece314511c3eed1288 100644 (file)
@@ -646,6 +646,7 @@ ENTRY(hypervisor_call_table)
         .long SYMBOL_NAME(do_set_fast_trap)
         .long SYMBOL_NAME(do_dom_mem_op)
         .long SYMBOL_NAME(do_multicall)
+        .long SYMBOL_NAME(do_kbd_op)
         .rept NR_syscalls-((.-hypervisor_call_table)/4)
         .long SYMBOL_NAME(sys_ni_syscall)
        .endr
index b103f2fb4ea837012856dcfedd24e3480e7b974b..4c65f4e0bb94470b6bb8e13e2bc1ef2fe3f8fb0b 100644 (file)
@@ -2,8 +2,10 @@
 #include <asm-i386/irq.h>
 #include <xeno/sched.h>    /* this has request_irq() proto for some reason */
 #include <xeno/keyhandler.h>  
+#include <hypervisor-ifs/kbd.h>
+#include <xeno/event.h>
 
-#define KEYBOARD_IRQ 1
+/* Hash-defines torn from <linux/pc_keyb.h> and <asm/keyboard.h> */
 
 #define KBD_STATUS_REG      0x64 /* Status register (R) */
 #define KBD_CNTL_REG        0x64 /* Controller command register (W) */
 #define kbd_read_input() inb(KBD_DATA_REG)
 #define kbd_read_status() inb(KBD_STATUS_REG)
 
+#define KEYBOARD_IRQ 1
+#define kbd_write_output(val) outb(val, KBD_DATA_REG)
+#define kbd_write_command(val) outb(val, KBD_CNTL_REG)
 
-static int keyboard_shift = 0;
-static int keyboard_control = 0;
-static int keyboard_echo = 0;
+#define AUX_IRQ 12
 
-/* the following is pretty gross... 
- * stop reading if you don't want to throw up!
- */
 
-static unsigned char keymap_normal[] =
-{
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
+/* THIS SECTION DEALS WITH CONFIG_XEN_ATTENTION_KEY */
 
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
+// always set for now.  potentially moved to config.in later.
+#define CONFIG_XEN_ATTENTION_KEY
+
+#ifdef CONFIG_XEN_ATTENTION_KEY
 
+static int xen_attention_key_down = 0;
+#define XEN_ATTENTION_KEY 0x46 // scroll lock
+#define KBD_SCANCODE_KEYUP_MASK 0x80
+
+#undef KBD_DEBUG
+
+/* naive scancode -> key mappings for internal xen use */
+
+static unsigned char keymap_normal[] =
+{
    0 , 0 ,'1','2', '3','4','5','6',    '7','8','9','0', '-','=','\b','\t',
   'q','w','e','r', 't','y','u','i',    'o','p','[',']','\r', 0 ,'a','s',
   'd','f','g','h', 'j','k','l',';',   '\'','`', 0 ,'#', 'z','x','c','v',
@@ -57,16 +62,6 @@ static unsigned char keymap_normal[] =
 
 static unsigned char keymap_shift[] =
 {
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-
    0 , 0 ,'!','"', '#','$','%','^',    '&','*','(',')', '_','+','\b','\t',
   'Q','W','E','R', 'T','Y','U','I',    'O','P','{','}','\r', 0 ,'A','S',
   'D','F','G','H', 'J','K','L',':',    '@', 0 , 0 ,'~', 'Z','X','C','V',
@@ -81,16 +76,6 @@ static unsigned char keymap_shift[] =
 
 static unsigned char keymap_control[] =
 { /* same as normal, except for a-z -> 1 to 26 */
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
-
    0 , 0 ,'1','2', '3','4','5','6',    '7','8','9','0', '-','=','\b','\t',
    17, 23, 5 , 18,  20, 25, 21, 9 ,     15, 16,'[',']','\r', 0 , 1 , 19,
    4 , 6 , 7 , 8 ,  10, 11, 12,';',   '\'','`', 0 ,'#', 26, 24, 3 , 22,
@@ -103,6 +88,10 @@ static unsigned char keymap_control[] =
 };
 
 
+static int keyboard_shift = 0;
+static int keyboard_control = 0;
+static int keyboard_echo = 0;
+
 static unsigned char convert_scancode (unsigned char scancode)
 {
     unsigned char value = 0;
@@ -134,6 +123,10 @@ static unsigned char convert_scancode (unsigned char scancode)
        break;
 
     default:   /* normal keys */
+        // dont process key-down events
+        if(!(scancode & KBD_SCANCODE_KEYUP_MASK)) break; 
+
+       scancode = scancode & (~KBD_SCANCODE_KEYUP_MASK); 
        if (keyboard_control)
            value = keymap_control[scancode];
        else if (keyboard_shift)
@@ -148,45 +141,151 @@ static unsigned char convert_scancode (unsigned char scancode)
     return value;
 }
 
-static void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-{
+#endif /* CONFIG_XEN_ATTENTION_KEY */
+
+
+/* THIS SECTION DEALS WITH STORING A RING OF PENDING EVENTS */
+
+// store kbd events waiting to be processed by guest os
+#define KBD_RING_SIZE        64 
+static int kbd_ring[KBD_RING_SIZE]; 
+static int kbd_ring_prod = 0;
+static int kbd_ring_cons = 0;
+
+#define KBD_RING_INC(_i)     (((_i)+1) & (KBD_RING_SIZE-1))
+#define KBD_RING_FULL (KBD_RING_INC(kbd_ring_prod)  == kbd_ring_cons)
+#define KBD_RING_EMPTY (kbd_ring_prod == kbd_ring_cons)
+
+// these assume locking has already been taken care of
+static void kbd_ring_push(unsigned char status, unsigned char scancode) {
+  if(KBD_RING_FULL) return;
+  kbd_ring[kbd_ring_prod] = KBD_CODE(scancode, status);
+  kbd_ring_prod = KBD_RING_INC(kbd_ring_prod);
+}
+
+static int kbd_ring_pop() {
+  int ret;
+  if(KBD_RING_EMPTY) {
+    // read directly from controller - no events waiting in ring
     unsigned char status = kbd_read_status();
-    unsigned int work = 10000;
+    unsigned char scancode = kbd_read_input(); 
+    return KBD_CODE(scancode, status);
+  }
+  ret = kbd_ring[kbd_ring_cons];
+  kbd_ring_cons = KBD_RING_INC(kbd_ring_cons);
+  return ret;
+}
+
+
+/* THIS SECTION DEALS WITH COMMUNICATING PS2 EVENTS/CMDS WITH GUEST OS */
+
+// ownership of keyboard - current defaulting to dom0
+#define KBD_ISOWNER(p) (p->domain == 0) 
+#define KBD_OWNER find_domain_by_id(0) 
+
+// need lock as there may be _two_ interrupts at play, keyboard and mouse, as well as guest os actions
+static spinlock_t kbd_lock;
+
 
+long do_kbd_op(unsigned char op, unsigned char val)
+{
+  // check for domain 0
+#ifdef KBD_DEBUG
+  printk("do_kbd_op: op %2x, val %2x, prod %d, cons %d\n", op, val, kbd_ring_prod, kbd_ring_cons); 
+#endif
+
+  if ( !KBD_ISOWNER(current) ) return -EPERM;  
+
+  switch(op) {
+  case KBD_OP_WRITEOUTPUT:
+    kbd_write_output(val);
+    return 0L;
+  case KBD_OP_WRITECOMMAND:
+    kbd_write_command(val);
+    return 0L;
+  case KBD_OP_READ: {
+    unsigned long flags;
+    unsigned long ret;
+    spin_lock_irqsave(&kbd_lock, flags);
+    ret = kbd_ring_pop();
+    spin_unlock_irqrestore(&kbd_lock, flags);
+    return ret;
+  }
+  }
+
+  return -EINVAL;
+}
+
+
+static void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+  unsigned char status;
+  unsigned int work = 1000;
+  unsigned long cpu_mask;
+  unsigned long flags;
+  spin_lock_irqsave(&kbd_lock, flags);
+  status = kbd_read_status();
+#ifdef KBD_DEBUG
+    printk("keyboard_interrupt irq %d, status 0x%2x\n", irq, status);
+#endif
     while ((--work > 0) && (status & KBD_STAT_OBF))
-    {
-       unsigned char scancode;
-       scancode = kbd_read_input();
-       
-       if (!(status & (KBD_STAT_GTO | KBD_STAT_PERR)))
-       {
-           if (status & KBD_STAT_MOUSE_OBF)
-               /* mouse event, ignore */;
-           else {
-               unsigned char key; 
-               key_handler *handler; 
-               
-               if((key = convert_scancode (scancode)) && 
-                  (handler = get_key_handler(key))) 
-                   (*handler)(key, dev_id, regs); 
-               
-           }
+    {      
+      unsigned char scancode;
+      scancode = kbd_read_input();
+      //printk("scancode 0x%2x\n", scancode);
+      
+#ifdef CONFIG_XEN_ATTENTION_KEY
+      if(!(status & (KBD_STAT_GTO | KBD_STAT_PERR | KBD_STAT_MOUSE_OBF))) {
+       if ((scancode & (~KBD_SCANCODE_KEYUP_MASK)) == XEN_ATTENTION_KEY) {
+         xen_attention_key_down = !(scancode & KBD_SCANCODE_KEYUP_MASK);
+         //printk("xen_attention_key_down %d\n", xen_attention_key_down);
+       } else if (xen_attention_key_down) {
+         key_handler *handler; 
+         unsigned char key = convert_scancode(scancode); 
+         if(key && (handler = get_key_handler(key))) 
+           (*handler)(key, dev_id, regs); 
+         
+         status = kbd_read_status();
+         continue; // do not send key to guest os
        }
+      }
+#endif
+      
+      if (!(status & (KBD_STAT_GTO | KBD_STAT_PERR))) {
+       kbd_ring_push(status, scancode);
+
+       cpu_mask = mark_guest_event(KBD_OWNER, _EVENT_KBD);
+        guest_event_notify(cpu_mask);
+
        status = kbd_read_status();
+       scancode = kbd_read_input();
+      }
     }
     
     if (!work)
-       printk(KERN_ERR "pc_keyb: controller jammed (0x%02X).\n", status);
-    
-    return;
-}
+      printk(KERN_ERR "xen_keyb: controller jammed (0x%02X).\n", status);
 
+    spin_unlock_irqrestore(&kbd_lock, flags);
+}
+    
+    
 
 void initialize_keyboard()
 {
-    if(request_irq(KEYBOARD_IRQ, keyboard_interrupt, SA_NOPROFILE, "keyboard", NULL))
-       printk("initialize_keyboard: failed to alloc IRQ %d\n", KEYBOARD_IRQ); 
+  spin_lock_init(&kbd_lock);
+
+  if(request_irq(KEYBOARD_IRQ, keyboard_interrupt, SA_NOPROFILE, "keyboard", NULL)) {
+    printk("initialize_keyboard: failed to alloc IRQ %d\n", KEYBOARD_IRQ); 
+    return;
+  }
+
+  if(request_irq(AUX_IRQ, keyboard_interrupt, SA_NOPROFILE, "PS/2 Mouse", NULL)) {
+    printk("initialize_keyboard: failed to alloc IRQ %d\n", AUX_IRQ); 
+    return;
+  }
 
-    return; 
+#ifdef KBD_DEBUG
+  printk("PS/2 keyboard and mouse interface ok");
+#endif
 }
 
index 6abf2c22224fb3ea07c882f4b77f0d4d05faaa44..fe38c98db9ec4433e3d81ef4dcdb74f3bc96dbbe 100644 (file)
@@ -47,6 +47,7 @@
 #define __HYPERVISOR_set_fast_trap       16
 #define __HYPERVISOR_dom_mem_op                  17
 #define __HYPERVISOR_multicall           18
+#define __HYPERVISOR_kbd_op               19
 
 /* And the trap vector is... */
 #define TRAP_INSTR "int $0x82"
@@ -77,6 +78,7 @@
 #define EVENT_DEBUG    0x08 /* Request guest to dump debug info (gross!) */
 #define EVENT_NET_TX   0x10 /* There are packets for transmission. */
 #define EVENT_NET_RX   0x20 /* There are empty buffers for receive. */
+#define EVENT_KBD      0x40 /* PS/2 keyboard or mouse event(s) */
 
 /* Bit offsets, as opposed to the above masks. */
 #define _EVENT_BLK_RESP 0
@@ -85,7 +87,7 @@
 #define _EVENT_NET_TX  3
 #define _EVENT_NET_RX  4
 #define _EVENT_DEBUG   5
-
+#define _EVENT_KBD      6
 
 /*
  * Virtual addresses beyond this are not modifiable by guest OSes.
diff --git a/xen/include/hypervisor-ifs/kbd.h b/xen/include/hypervisor-ifs/kbd.h
new file mode 100644 (file)
index 0000000..0f1ee77
--- /dev/null
@@ -0,0 +1,20 @@
+/******************************************************************************
+ * kbd.h
+ *
+ * PS/2 interface definitions
+ * Copyright (c) 2003 James Scott, Intel Research Cambridge
+ */
+
+#ifndef __HYPERVISOR_KBD_H__
+#define __HYPERVISOR_KBD_H__
+
+                        
+#define KBD_OP_WRITEOUTPUT   0
+#define KBD_OP_WRITECOMMAND  1
+#define KBD_OP_READ          2
+
+#define KBD_CODE_SCANCODE(_r) ((unsigned char)((_r) & 0xff))
+#define KBD_CODE_STATUS(_r) ((unsigned char)(((_r) >> 8) & 0xff))
+#define KBD_CODE(_c, _s) ((int)(((_c) & 0xff)  | (((_s) & 0xff) << 8)))
+
+#endif
index 7dd6b1c985f9199b7528a6a430c3f644c0e15412..2bf874d69e387d727d96c8f196afa5c19f5e3964 100644 (file)
@@ -107,6 +107,8 @@ source drivers/block/Config.in
 define_bool CONFIG_BLK_DEV_IDE_MODES n
 define_bool CONFIG_BLK_DEV_HD n
 
+source drivers/char/Config.in
+
 source fs/Config.in
 
 mainmenu_option next_comment
@@ -126,4 +128,4 @@ fi
 
 endmenu
 
-source lib/Config.in
\ No newline at end of file
+source lib/Config.in
index c9e4e1a4f7ddfb91d7739fc5bc0fcd4429b5da49..6e2e14723fb508aaa4c844e2770b3f002abc8a5e 100644 (file)
@@ -1,6 +1,7 @@
 #
 # Automatically generated make config: don't edit
 #
+CONFIG_XENO=y
 CONFIG_X86=y
 CONFIG_ISA=y
 # CONFIG_SBUS is not set
@@ -21,21 +22,10 @@ CONFIG_KMOD=y
 #
 # Processor type and features
 #
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
 CONFIG_M686=y
 # CONFIG_MPENTIUMIII is not set
 # CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
 # CONFIG_MK7 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MCYRIXIII is not set
 CONFIG_X86_WP_WORKS_OK=y
 CONFIG_X86_INVLPG=y
 CONFIG_X86_CMPXCHG=y
@@ -44,34 +34,19 @@ CONFIG_X86_BSWAP=y
 CONFIG_X86_POPAD_OK=y
 # CONFIG_RWSEM_GENERIC_SPINLOCK is not set
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_X86_L1_CACHE_SHIFT=5
-CONFIG_X86_TSC=y
 CONFIG_X86_GOOD_APIC=y
 CONFIG_X86_PGE=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
+CONFIG_X86_TSC=y
+CONFIG_X86_L1_CACHE_SHIFT=5
 CONFIG_NOHIGHMEM=y
 # CONFIG_HIGHMEM4G is not set
 # CONFIG_HIGHMEM64G is not set
-# CONFIG_MATH_EMULATION is not set
-# CONFIG_MTRR is not set
-# CONFIG_SMP is not set
-# CONFIG_X86_UP_APIC is not set
 
 #
 # General setup
 #
 CONFIG_NET=y
-# CONFIG_PCI is not set
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_HOTPLUG is not set
-# CONFIG_PCMCIA is not set
-# CONFIG_HOTPLUG_PCI is not set
 CONFIG_SYSVIPC=y
 # CONFIG_BSD_PROCESS_ACCT is not set
 CONFIG_SYSCTL=y
@@ -80,54 +55,12 @@ CONFIG_KCORE_ELF=y
 CONFIG_BINFMT_AOUT=y
 CONFIG_BINFMT_ELF=y
 # CONFIG_BINFMT_MISC is not set
-# CONFIG_PM is not set
-# CONFIG_APM_IGNORE_USER_SUSPEND is not set
-# CONFIG_APM_DO_ENABLE is not set
-# CONFIG_APM_CPU_IDLE is not set
-# CONFIG_APM_DISPLAY_BLANK is not set
-# CONFIG_APM_RTC_IS_GMT is not set
-# CONFIG_APM_ALLOW_INTS is not set
-# CONFIG_APM_REAL_MODE_POWER_OFF is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_NBD=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_XENOLINUX_BLOCK=y
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
 
 #
 # Networking options
 #
 CONFIG_PACKET=y
 CONFIG_PACKET_MMAP=y
-CONFIG_NETLINK=y
-CONFIG_RTNETLINK=y
 # CONFIG_NETLINK_DEV is not set
 # CONFIG_NETFILTER is not set
 CONFIG_FILTER=y
@@ -143,12 +76,18 @@ CONFIG_IP_PNP=y
 # CONFIG_NET_IPGRE is not set
 # CONFIG_INET_ECN is not set
 # CONFIG_SYN_COOKIES is not set
+# CONFIG_VLAN_8021Q is not set
 
 #
 #  
 #
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK is not set
 # CONFIG_DECNET is not set
 # CONFIG_BRIDGE is not set
 
@@ -158,207 +97,119 @@ CONFIG_IP_PNP=y
 # CONFIG_NET_SCHED is not set
 
 #
-# Telephony Support
+# Network testing
 #
-# CONFIG_PHONE is not set
+# CONFIG_NET_PKTGEN is not set
 
 #
-# ATA/IDE/MFM/RLL support
+# Block devices
 #
-# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_NBD=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_STATS is not set
+CONFIG_XENOLINUX_BLOCK=y
 # CONFIG_BLK_DEV_IDE_MODES is not set
 # CONFIG_BLK_DEV_HD is not set
 
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION_BOOT is not set
-# CONFIG_FUSION_ISENSE is not set
-# CONFIG_FUSION_CTL is not set
-# CONFIG_FUSION_LAN is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-# CONFIG_NETDEVICES is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-
 #
 # Character devices
 #
 # CONFIG_VT is not set
-# CONFIG_SERIAL is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_DUMMY_CONSOLE is not set
+CONFIG_PSMOUSE=y
 # CONFIG_UNIX98_PTYS is not set
 
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_INPUT_GAMEPORT is not set
-
-#
-# Input core support is needed for gameports
-#
-
-#
-# Input core support is needed for joysticks
-#
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-# CONFIG_MWAVE is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
 #
 # File systems
 #
 # CONFIG_QUOTA is not set
 CONFIG_AUTOFS_FS=y
 CONFIG_AUTOFS4_FS=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
 CONFIG_EXT3_FS=y
 CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
 # CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_TMPFS is not set
 CONFIG_RAMFS=y
 CONFIG_ISO9660_FS=y
 CONFIG_JOLIET=y
 CONFIG_ZISOFS=y
-CONFIG_ZISOFS_FS=y
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
 # CONFIG_MINIX_FS is not set
 # CONFIG_VXFS_FS is not set
 # CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
 # CONFIG_HPFS_FS is not set
 CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+# CONFIG_DEVPTS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_EXT2_FS=y
 # CONFIG_SYSV_FS is not set
 # CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
 # CONFIG_UFS_FS is not set
-
-# Skanky NLS stuff
-CONFIG_NLS_DEFAULT="iso8559-1"
-CONFIG_NLS_CODEPAGE_437=n
-CONFIG_NLS_CODEPAGE_737=n
-CONFIG_NLS_CODEPAGE_775=n
-CONFIG_NLS_CODEPAGE_850=n
-CONFIG_NLS_CODEPAGE_852=n
-CONFIG_NLS_CODEPAGE_855=n
-CONFIG_NLS_CODEPAGE_857=n
-CONFIG_NLS_CODEPAGE_860=n
-CONFIG_NLS_CODEPAGE_861=n
-CONFIG_NLS_CODEPAGE_862=n
-CONFIG_NLS_CODEPAGE_863=n
-CONFIG_NLS_CODEPAGE_864=n
-CONFIG_NLS_CODEPAGE_865=n
-CONFIG_NLS_CODEPAGE_866=n
-CONFIG_NLS_CODEPAGE_869=n
-CONFIG_NLS_CODEPAGE_936=n
-CONFIG_NLS_CODEPAGE_950=n
-CONFIG_NLS_CODEPAGE_932=n
-CONFIG_NLS_CODEPAGE_949=n
-CONFIG_NLS_CODEPAGE_874=n
-CONFIG_NLS_ISO8859_8=n
-CONFIG_NLS_CODEPAGE_1250=n
-CONFIG_NLS_CODEPAGE_1251=n
-CONFIG_NLS_ISO8859_1=n
-CONFIG_NLS_ISO8859_2=n
-CONFIG_NLS_ISO8859_3=n
-CONFIG_NLS_ISO8859_4=n
-CONFIG_NLS_ISO8859_5=n
-CONFIG_NLS_ISO8859_6=n
-CONFIG_NLS_ISO8859_7=n
-CONFIG_NLS_ISO8859_9=n
-CONFIG_NLS_ISO8859_13=n
-CONFIG_NLS_ISO8859_14=n
-CONFIG_NLS_ISO8859_15=n
-CONFIG_NLS_KOI8_R=n
-CONFIG_NLS_KOI8_U=n
-CONFIG_NLS_UTF8=n
-
+# CONFIG_UFS_FS_WRITE is not set
 
 #
 # Network File Systems
 #
 # CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
 CONFIG_NFS_FS=y
 CONFIG_NFS_V3=y
 CONFIG_ROOT_NFS=y
 CONFIG_NFSD=y
 CONFIG_NFSD_V3=y
+# CONFIG_NFSD_TCP is not set
 CONFIG_SUNRPC=y
 CONFIG_LOCKD=y
 CONFIG_LOCKD_V4=y
 # CONFIG_SMB_FS is not set
 # CONFIG_NCP_FS is not set
-# CONFIG_ZISOFS_FS is not set
-# CONFIG_ZLIB_FS_INFLATE is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+CONFIG_ZISOFS_FS=y
 
 #
 # Partition Types
@@ -366,60 +217,49 @@ CONFIG_LOCKD_V4=y
 # CONFIG_PARTITION_ADVANCED is not set
 CONFIG_MSDOS_PARTITION=y
 # CONFIG_SMB_NLS is not set
-# CONFIG_NLS is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-
-#
-# USB Controllers
-#
-
-#
-# USB Device Class drivers
-#
-
-#
-# USB Human Interface Devices (HID)
-#
-
-#
-#   Input core support is needed for USB HID
-#
-
-#
-# USB Imaging devices
-#
-
-#
-# USB Multimedia devices
-#
-
-#
-#   Video4Linux support is needed for USB Multimedia device support
-#
+CONFIG_NLS=y
 
 #
-# USB Network adaptors
-#
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-
-#
-# USB Miscellaneous drivers
+# Native Language Support
 #
+CONFIG_NLS_DEFAULT="iso8559-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
 
 #
 # Kernel hacking
@@ -434,18 +274,8 @@ CONFIG_DEBUG_KERNEL=y
 CONFIG_KALLSYMS=y
 # CONFIG_FRAME_POINTER is not set
 
-# Grim cruft
 #
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_BLK_STATS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-
-# 
 # Library routines
 #
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=n
+# CONFIG_ZLIB_DEFLATE is not set
diff --git a/xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in b/xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
new file mode 100644 (file)
index 0000000..edeb8b3
--- /dev/null
@@ -0,0 +1,357 @@
+#
+# Character device configuration
+#
+mainmenu_option next_comment
+comment 'Character devices'
+
+bool 'Virtual terminal' CONFIG_VT
+if [ "$CONFIG_VT" = "n" ]; then
+   bool 'Dummy Console (to allow kbd/mouse testing without VTs)' CONFIG_DUMMY_CONSOLE
+fi   
+
+bool 'PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
+
+bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
+if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
+   int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
+fi
+
+endmenu
+
+# KEPT IN CASE WE WANT TO BRING SOME BACK...
+#
+#if [ "$CONFIG_VT" = "y" ]; then
+#   bool '  Support for console on virtual terminal' CONFIG_VT_CONSOLE
+#   if [ "$CONFIG_GSC_LASI" = "y" ]; then
+#      bool '    Support for Lasi/Dino PS2 port' CONFIG_GSC_PS2
+#   fi
+#fi
+#
+#tristate 'Standard/generic (8250/16550 and compatible UARTs) serial support' CONFIG_SERIAL
+#if [ "$CONFIG_SERIAL" = "y" ]; then
+#   bool '  Support for console on serial port' CONFIG_SERIAL_CONSOLE
+#   if [ "$CONFIG_GSC_LASI" = "y" ]; then
+#      bool '   serial port on GSC support' CONFIG_SERIAL_GSC
+#   fi
+#   if [ "$CONFIG_IA64" = "y" ]; then
+#      bool 'Support for serial console port described by EFI HCDP table' CONFIG_SERIAL_HCDP
+#   fi
+#   if [ "$CONFIG_ARCH_ACORN" = "y" ]; then
+#      tristate '   Atomwide serial port support' CONFIG_ATOMWIDE_SERIAL
+#      tristate '   Dual serial port support' CONFIG_DUALSP_SERIAL
+#   fi
+#fi
+#dep_mbool 'Extended dumb serial driver options' CONFIG_SERIAL_EXTENDED $CONFIG_SERIAL
+#if [ "$CONFIG_SERIAL_EXTENDED" = "y" ]; then
+#   bool '  Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS
+#   bool '  Support for sharing serial interrupts' CONFIG_SERIAL_SHARE_IRQ
+#   bool '  Autodetect IRQ on standard ports (unsafe)' CONFIG_SERIAL_DETECT_IRQ
+#   bool '  Support special multiport boards' CONFIG_SERIAL_MULTIPORT
+#   bool '  Support the Bell Technologies HUB6 card' CONFIG_HUB6
+#fi
+#bool 'Non-standard serial port support' CONFIG_SERIAL_NONSTANDARD
+#if [ "$CONFIG_SERIAL_NONSTANDARD" = "y" ]; then
+#   tristate '  Computone IntelliPort Plus serial support' CONFIG_COMPUTONE
+#   tristate '  Comtrol Rocketport support' CONFIG_ROCKETPORT
+#   tristate '  Cyclades async mux support' CONFIG_CYCLADES
+#   if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_CYCLADES" != "n" ]; then
+#      bool '    Cyclades-Z interrupt mode operation (EXPERIMENTAL)' CONFIG_CYZ_INTR
+#   fi
+#   if [ "$CONFIG_X86_64" != "y" ]; then
+#      tristate '  Digiboard Intelligent Async Support' CONFIG_DIGIEPCA
+#      if [ "$CONFIG_DIGIEPCA" = "n" ]; then
+#         tristate '  Digiboard PC/Xx Support' CONFIG_DIGI
+#      fi
+#   fi
+#   dep_tristate '  Hayes ESP serial port support' CONFIG_ESPSERIAL $CONFIG_ISA
+#   tristate '  Moxa Intellio support' CONFIG_MOXA_INTELLIO
+#   tristate '  Moxa SmartIO support' CONFIG_MOXA_SMARTIO
+#   if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+#      dep_tristate '  Multi-Tech multiport card support (EXPERIMENTAL)' CONFIG_ISI m
+#   fi
+#   tristate '  Microgate SyncLink card support' CONFIG_SYNCLINK
+#   tristate '  SyncLink Multiport support' CONFIG_SYNCLINKMP
+#   tristate '  HDLC line discipline support' CONFIG_N_HDLC
+#   tristate '  SDL RISCom/8 card support' CONFIG_RISCOM8
+#   if [ "$CONFIG_X86_64" != "y" ]; then
+#      tristate '  Specialix IO8+ card support' CONFIG_SPECIALIX
+#      if [ "$CONFIG_SPECIALIX" != "n" ]; then
+#         bool '  Specialix DTR/RTS pin is RTS' CONFIG_SPECIALIX_RTSCTS
+#      fi 
+#      tristate '  Specialix SX (and SI) card support' CONFIG_SX
+#      tristate '  Specialix RIO system support' CONFIG_RIO
+#      if [ "$CONFIG_RIO" != "n" ]; then
+#        bool '    Support really old RIO/PCI cards' CONFIG_RIO_OLDPCI
+#      fi
+#   fi
+#   bool '  Stallion multiport serial support' CONFIG_STALDRV
+#   if [ "$CONFIG_STALDRV" = "y" ]; then
+#     tristate '    Stallion EasyIO or EC8/32 support' CONFIG_STALLION
+#     tristate '    Stallion EC8/64, ONboard, Brumby support' CONFIG_ISTALLION
+#   fi
+#   if [ "$CONFIG_PARISC" = "y" ]; then
+#     if [ "$CONFIG_PDC_CONSOLE" != "y" ]; then
+#       bool '  Serial MUX support' CONFIG_SERIAL_MUX CONFIG_SERIAL_NONSTANDARD
+#     fi
+#     if [ "$CONFIG_SERIAL_MUX" != "y" ]; then
+#       bool '  PDC software console support' CONFIG_PDC_CONSOLE CONFIG_SERIAL_NONSTANDARD
+#     fi
+#   fi
+#   if [ "$CONFIG_MIPS" = "y" ]; then
+#     bool '  TX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
+#     dep_bool '     Console on TX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
+#     bool '  Enable Au1000 UART Support' CONFIG_AU1000_UART
+#     if [ "$CONFIG_AU1000_UART" = "y" ]; then
+#        bool '        Enable Au1000 serial console' CONFIG_AU1000_SERIAL_CONSOLE
+#     fi
+#     bool 'TXx927 SIO support' CONFIG_TXX927_SERIAL 
+#     if [ "$CONFIG_TXX927_SERIAL" = "y" ]; then
+#        bool 'TXx927 SIO Console support' CONFIG_TXX927_SERIAL_CONSOLE  
+#     fi                             
+#     if [ "$CONFIG_SIBYTE_SB1250" = "y" ]; then
+#        bool '  Support for sb1250 onchip DUART' CONFIG_SIBYTE_SB1250_DUART
+#        if [ "$CONFIG_SIBYTE_SB1250_DUART" = "y" ]; then
+#           bool '  Console on SB1250 DUART' CONFIG_SIBYTE_SB1250_DUART_CONSOLE
+#         if [ "$CONFIG_SIBYTE_SB1250_DUART_CONSOLE" = "y" ]; then
+#            define_bool CONFIG_SERIAL_CONSOLE y
+#         fi
+#         int  '  Output buffers size (in bytes)' CONFIG_SB1250_DUART_OUTPUT_BUF_SIZE 1024
+#         bool '  Leave port 1 alone (for kgdb or audio)' CONFIG_SIBYTE_SB1250_DUART_NO_PORT_1
+#       fi
+#     fi
+#  fi
+#fi
+#if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_ZORRO" = "y" ]; then
+#   tristate 'Commodore A2232 serial support (EXPERIMENTAL)' CONFIG_A2232
+#fi
+#if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
+#   bool 'DC21285 serial port support' CONFIG_SERIAL_21285
+#   if [ "$CONFIG_SERIAL_21285" = "y" ]; then
+#      if [ "$CONFIG_OBSOLETE" = "y" ]; then
+#         bool '  Use /dev/ttyS0 device (OBSOLETE)' CONFIG_SERIAL_21285_OLD
+#      fi
+#      bool '  Console on DC21285 serial port' CONFIG_SERIAL_21285_CONSOLE
+#   fi
+#   if [ "$CONFIG_MIPS" = "y" ]; then
+#     bool '  TMPTX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
+#     dep_bool '     Console on TMPTX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
+#     bool '  Enable Au1000 UART Support' CONFIG_AU1000_UART
+#     if [ "$CONFIG_AU1000_UART" = "y" ]; then
+#         bool '        Enable Au1000 serial console' CONFIG_AU1000_SERIAL_CONSOLE
+#     fi
+#   fi
+#   if [ "$CONFIG_PARISC" = "y" ]; then
+#     bool '  PDC software console support' CONFIG_PDC_CONSOLE
+#   fi
+#fi
+#if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
+#   bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
+#   if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
+#     define_bool CONFIG_IT8172_CIR y
+#   else
+#     bool '    Enable PS2 Keyboard Support' CONFIG_PC_KEYB
+#   fi
+#   bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
+#   bool 'Enable Smart Card Reader 1 Support ' CONFIG_IT8172_SCR1
+#fi
+#if [ "$CONFIG_MIPS_IVR" = "y" ]; then
+#   bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
+#   if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
+#     define_bool CONFIG_IT8172_CIR y
+#   fi
+#   bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
+#fi
+##PTYS WERE HERE
+#if [ "$CONFIG_PARPORT" != "n" ]; then
+#   dep_tristate 'Parallel printer support' CONFIG_PRINTER $CONFIG_PARPORT
+#   if [ "$CONFIG_PRINTER" != "n" ]; then
+#      bool '  Support for console on line printer' CONFIG_LP_CONSOLE
+#   fi
+#   dep_tristate 'Support for user-space parallel port device drivers' CONFIG_PPDEV $CONFIG_PARPORT
+#   dep_tristate 'Texas Instruments parallel link cable support' CONFIG_TIPAR $CONFIG_PARPORT
+#fi
+#
+#if [ "$CONFIG_PPC64" ] ; then 
+#   bool 'pSeries Hypervisor Virtual Console support' CONFIG_HVC_CONSOLE
+#fi
+#
+#source drivers/i2c/Config.in
+#
+#mainmenu_option next_comment
+#comment 'Mice'
+#tristate 'Bus Mouse Support' CONFIG_BUSMOUSE
+#if [ "$CONFIG_BUSMOUSE" != "n" ]; then
+#   dep_tristate '  ATIXL busmouse support' CONFIG_ATIXL_BUSMOUSE $CONFIG_BUSMOUSE
+#   dep_tristate '  Logitech busmouse support' CONFIG_LOGIBUSMOUSE $CONFIG_BUSMOUSE
+#   dep_tristate '  Microsoft busmouse support' CONFIG_MS_BUSMOUSE $CONFIG_BUSMOUSE
+#   if [ "$CONFIG_ADB" = "y" -a "$CONFIG_ADB_KEYBOARD" = "y" ]; then
+#      dep_tristate '  Apple Desktop Bus mouse support (old driver)' CONFIG_ADBMOUSE $CONFIG_BUSMOUSE
+#   fi
+#fi
+#
+#tristate 'Mouse Support (not serial and bus mice)' CONFIG_MOUSE
+#if [ "$CONFIG_MOUSE" != "n" ]; then
+#   bool '  PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
+#   tristate '  C&T 82C710 mouse port support (as on TI Travelmate)' CONFIG_82C710_MOUSE
+#   tristate '  PC110 digitizer pad support' CONFIG_PC110_PAD
+#   tristate '  MK712 touch screen support' CONFIG_MK712_MOUSE
+#fi
+#endmenu
+#
+#source drivers/char/joystick/Config.in
+#
+#tristate 'QIC-02 tape support' CONFIG_QIC02_TAPE
+#if [ "$CONFIG_QIC02_TAPE" != "n" ]; then
+#   bool '  Do you want runtime configuration for QIC-02' CONFIG_QIC02_DYNCONF
+#   if [ "$CONFIG_QIC02_DYNCONF" != "y" ]; then
+#      comment '  Edit configuration parameters in ./include/linux/tpqic02.h!'
+#   else
+#      comment '  Setting runtime QIC-02 configuration is done with qic02conf'
+#      comment '  from the tpqic02-support package.  It is available at'
+#      comment '  metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/'
+#   fi
+#fi
+#
+#tristate 'IPMI top-level message handler' CONFIG_IPMI_HANDLER
+#dep_mbool '  Generate a panic event to all BMCs on a panic' CONFIG_IPMI_PANIC_EVENT $CONFIG_IPMI_HANDLER
+#dep_tristate '  Device interface for IPMI' CONFIG_IPMI_DEVICE_INTERFACE $CONFIG_IPMI_HANDLER
+#dep_tristate '  IPMI KCS handler' CONFIG_IPMI_KCS $CONFIG_IPMI_HANDLER
+#dep_tristate '  IPMI Watchdog Timer' CONFIG_IPMI_WATCHDOG $CONFIG_IPMI_HANDLER
+#
+#mainmenu_option next_comment
+#comment 'Watchdog Cards'
+#bool 'Watchdog Timer Support' CONFIG_WATCHDOG
+#if [ "$CONFIG_WATCHDOG" != "n" ]; then
+#   bool '  Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT
+#   tristate '  Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT
+#   tristate '  Advantech SBC Watchdog Timer' CONFIG_ADVANTECH_WDT
+#   tristate '  ALi M7101 PMU Watchdog Timer' CONFIG_ALIM7101_WDT
+#   tristate '  AMD "Elan" SC520 Watchdog Timer' CONFIG_SC520_WDT
+#   tristate '  Berkshire Products PC Watchdog' CONFIG_PCWATCHDOG
+#   if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
+#      tristate '  DC21285 watchdog' CONFIG_21285_WATCHDOG
+#      if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
+#         tristate '  NetWinder WB83C977 watchdog' CONFIG_977_WATCHDOG
+#      fi
+#   fi
+#   tristate '  Eurotech CPU-1220/1410 Watchdog Timer' CONFIG_EUROTECH_WDT
+#   tristate '  IB700 SBC Watchdog Timer' CONFIG_IB700_WDT
+#   tristate '  ICP ELectronics Wafer 5823 Watchdog' CONFIG_WAFER_WDT
+#   if [ "$CONFIG_SGI_IP22" = "y" ]; then
+#      dep_tristate '  Indy/I2 Hardware Watchdog' CONFIG_INDYDOG $CONFIG_SGI_IP22
+#   fi
+#   tristate '  Intel i810 TCO timer / Watchdog' CONFIG_I810_TCO
+#   tristate '  Mixcom Watchdog' CONFIG_MIXCOMWD 
+#   tristate '  SBC-60XX Watchdog Timer' CONFIG_60XX_WDT
+#   dep_tristate '  SC1200 Watchdog Timer (EXPERIMENTAL)' CONFIG_SC1200_WDT $CONFIG_EXPERIMENTAL
+#   tristate '  NatSemi SCx200 Watchdog' CONFIG_SCx200_WDT
+#   tristate '  Software Watchdog' CONFIG_SOFT_WATCHDOG
+#   tristate '  W83877F (EMACS) Watchdog Timer' CONFIG_W83877F_WDT
+#   tristate '  WDT Watchdog timer' CONFIG_WDT
+#   tristate '  WDT PCI Watchdog timer' CONFIG_WDTPCI
+#   if [ "$CONFIG_WDT" != "n" ]; then
+#      bool '    WDT501 features' CONFIG_WDT_501
+#      if [ "$CONFIG_WDT_501" = "y" ]; then
+#         bool '      Fan Tachometer' CONFIG_WDT_501_FAN
+#      fi
+#   fi
+#   tristate '  ZF MachZ Watchdog' CONFIG_MACHZ_WDT
+#   dep_tristate '  AMD 766/768 TCO Timer/Watchdog' CONFIG_AMD7XX_TCO $CONFIG_EXPERIMENTAL
+#fi
+#endmenu
+#
+#if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
+#   tristate 'NetWinder thermometer support' CONFIG_DS1620
+#   tristate 'NetWinder Button' CONFIG_NWBUTTON
+#   if [ "$CONFIG_NWBUTTON" != "n" ]; then
+#      bool '  Reboot Using Button' CONFIG_NWBUTTON_REBOOT
+#   fi
+#   tristate 'NetWinder flash support' CONFIG_NWFLASH
+#fi
+#dep_tristate 'NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
+#
+#if [ "$CONFIG_X86" = "y" -o "$CONFIG_X86_64" = "y" ]; then
+#   dep_tristate 'AMD 768 Random Number Generator support' CONFIG_AMD_RNG $CONFIG_PCI
+#fi
+#if [ "$CONFIG_X86" = "y" -o "$CONFIG_IA64" = "y" ]; then
+#   dep_tristate 'Intel i8x0 Random Number Generator support' CONFIG_INTEL_RNG $CONFIG_PCI
+#fi
+#dep_tristate 'AMD 76x native power management (Experimental)' CONFIG_AMD_PM768 $CONFIG_PCI
+#tristate '/dev/nvram support' CONFIG_NVRAM
+#tristate 'Enhanced Real Time Clock Support' CONFIG_RTC
+#if [ "$CONFIG_IA64" = "y" ]; then
+#   bool 'EFI Real Time Clock Services' CONFIG_EFI_RTC
+#fi
+#if [ "$CONFIG_OBSOLETE" = "y" -a "$CONFIG_ALPHA_BOOK1" = "y" ]; then
+#   bool 'Tadpole ANA H8 Support (OBSOLETE)'  CONFIG_H8
+#fi
+#
+#tristate 'Double Talk PC internal speech card support' CONFIG_DTLK
+#tristate 'Siemens R3964 line discipline' CONFIG_R3964
+#tristate 'Applicom intelligent fieldbus card support' CONFIG_APPLICOM
+#if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_X86" = "y" -a "$CONFIG_X86_64" != "y" ]; then
+#   dep_tristate 'Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL)' CONFIG_SONYPI $CONFIG_PCI
+#fi
+#
+#mainmenu_option next_comment
+#comment 'Ftape, the floppy tape device driver'
+#tristate 'Ftape (QIC-80/Travan) support' CONFIG_FTAPE
+#if [ "$CONFIG_FTAPE" != "n" ]; then
+#   source drivers/char/ftape/Config.in
+#fi
+#endmenu
+#
+#if [ "$CONFIG_GART_IOMMU" = "y" ]; then
+#      bool '/dev/agpgart (AGP Support)' CONFIG_AGP
+#      define_bool CONFIG_AGP_AMD_8151 y
+#else
+#      tristate '/dev/agpgart (AGP Support)' CONFIG_AGP
+#fi      
+#if [ "$CONFIG_AGP" != "n" ]; then
+#   bool '  Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support' CONFIG_AGP_INTEL
+#   bool '  Intel I810/I815/I830M (on-board) support' CONFIG_AGP_I810
+#   bool '  VIA chipset support' CONFIG_AGP_VIA
+#   bool '  AMD Irongate, 761, and 762 support' CONFIG_AGP_AMD
+#   if [ "$CONFIG_GART_IOMMU" != "y" ]; then
+#      bool '  AMD 8151 support' CONFIG_AGP_AMD_8151
+#   fi   
+#   bool '  Generic SiS support' CONFIG_AGP_SIS
+#   bool '  ALI chipset support' CONFIG_AGP_ALI
+#   bool '  Serverworks LE/HE support' CONFIG_AGP_SWORKS
+#   if [ "$CONFIG_IA64" = "y" ]; then
+#      bool '  HP ZX1 AGP support' CONFIG_AGP_HP_ZX1
+#   fi
+#fi
+#
+#bool 'Direct Rendering Manager (XFree86 DRI support)' CONFIG_DRM
+#if [ "$CONFIG_DRM" = "y" ]; then
+#   bool '  Build drivers for old (XFree 4.0) DRM' CONFIG_DRM_OLD
+#   if [ "$CONFIG_DRM_OLD" = "y" ]; then
+#      comment 'DRM 4.0 drivers'
+#      source drivers/char/drm-4.0/Config.in
+#   else
+#      comment 'DRM 4.1 drivers'
+#      define_bool CONFIG_DRM_NEW y
+#      source drivers/char/drm/Config.in
+#   fi
+#fi
+#
+#if [ "$CONFIG_HOTPLUG" = "y" -a "$CONFIG_PCMCIA" != "n" ]; then
+#   source drivers/char/pcmcia/Config.in
+#fi
+#if [ "$CONFIG_MIPS_AU1000" = "y" ]; then
+#   tristate ' Alchemy Au1000 GPIO device support' CONFIG_AU1000_GPIO
+#   tristate ' Au1000/ADS7846 touchscreen support' CONFIG_TS_AU1000_ADS7846
+#fi
+#if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
+#  tristate ' ITE GPIO' CONFIG_ITE_GPIO
+#fi
+#
+#if [ "$CONFIG_X86" = "y" ]; then
+#   tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
+#fi
+
+
+
+
+
diff --git a/xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile b/xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
new file mode 100644 (file)
index 0000000..0b7b73c
--- /dev/null
@@ -0,0 +1,339 @@
+#
+# Makefile for the kernel character device drivers.
+#
+# Note! Dependencies are done automagically by 'make dep', which also
+# removes any old dependencies. DON'T put your own dependencies here
+# unless it's something special (ie not a .c file).
+#
+# XENO INFO - this is just copied from the linux one
+# and most is irrelevant for xenolinux and can go.
+# (see Config.in for the relevant bits)
+# JWS - added dummy_console to test ps2 functionality
+
+
+#
+# This file contains the font map for the default (hardware) font
+#
+FONTMAPFILE = cp437.uni
+
+O_TARGET := char.o
+
+obj-y   += mem.o tty_io.o n_tty.o tty_ioctl.o raw.o pty.o misc.o random.o
+
+# All of the (potential) objects that export symbols.
+# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
+
+export-objs     :=     busmouse.o console.o keyboard.o sysrq.o \
+                       misc.o pty.o random.o selection.o serial.o \
+                       sonypi.o tty_io.o tty_ioctl.o generic_serial.o \
+                       au1000_gpio.o hp_psaux.o nvram.o dummy_console.o
+
+mod-subdirs    :=      joystick ftape drm drm-4.0 pcmcia
+
+list-multi     :=      
+
+KEYMAP   =defkeymap.o
+KEYBD    =pc_keyb.o
+CONSOLE  =console.o
+SERIAL   =serial.o
+
+ifeq ($(ARCH),s390)
+  KEYMAP   =
+  KEYBD    =
+  CONSOLE  =
+  SERIAL   =
+endif
+
+ifeq ($(ARCH),mips)
+  ifneq ($(CONFIG_PC_KEYB),y)
+    KEYBD    =
+  endif
+endif
+
+ifeq ($(ARCH),s390x)
+  KEYMAP   =
+  KEYBD    =
+  CONSOLE  =
+  SERIAL   =
+endif
+
+ifeq ($(ARCH),m68k)
+   ifdef CONFIG_AMIGA
+      KEYBD = amikeyb.o
+   else
+      ifndef CONFIG_MAC
+        KEYBD =
+      endif
+   endif
+   SERIAL   =
+endif
+
+ifeq ($(ARCH),parisc)
+   ifdef CONFIG_GSC_PS2
+      KEYBD   = hp_psaux.o hp_keyb.o
+   else
+      KEYBD   =
+   endif
+   ifdef CONFIG_SERIAL_MUX
+      CONSOLE += mux.o
+   endif
+   ifdef CONFIG_PDC_CONSOLE
+      CONSOLE += pdc_console.o
+   endif
+endif
+
+ifdef CONFIG_Q40
+  KEYBD += q40_keyb.o
+  SERIAL = serial.o
+endif
+
+ifdef CONFIG_APOLLO
+  KEYBD += dn_keyb.o
+endif
+
+ifeq ($(ARCH),parisc)
+   ifdef CONFIG_GSC_PS2
+      KEYBD   = hp_psaux.o hp_keyb.o
+   else
+      KEYBD   =
+   endif
+   ifdef CONFIG_PDC_CONSOLE
+      CONSOLE += pdc_console.o
+   endif
+endif
+
+ifeq ($(ARCH),arm)
+  ifneq ($(CONFIG_PC_KEYMAP),y)
+    KEYMAP   =
+  endif
+  ifneq ($(CONFIG_PC_KEYB),y)
+    KEYBD    =
+  endif
+endif
+
+ifeq ($(ARCH),sh)
+  KEYMAP   =
+  KEYBD    =
+  CONSOLE  =
+  ifeq ($(CONFIG_SH_HP600),y)
+  KEYMAP   = defkeymap.o
+  KEYBD    = scan_keyb.o hp600_keyb.o
+  CONSOLE  = console.o
+  endif
+  ifeq ($(CONFIG_SH_DMIDA),y)
+  # DMIDA does not connect the HD64465 PS/2 keyboard port
+  # but we allow for USB keyboards to be plugged in.
+  KEYMAP   = defkeymap.o
+  KEYBD    = # hd64465_keyb.o pc_keyb.o
+  CONSOLE  = console.o
+  endif
+  ifeq ($(CONFIG_SH_EC3104),y)
+  KEYMAP   = defkeymap.o
+  KEYBD    = ec3104_keyb.o
+  CONSOLE  = console.o
+  endif
+  ifeq ($(CONFIG_SH_DREAMCAST),y)
+  KEYMAP   = defkeymap.o
+  KEYBD    =
+  CONSOLE  = console.o
+  endif
+endif
+
+ifeq ($(CONFIG_DECSTATION),y)
+  KEYMAP   =
+  KEYBD    =
+  SERIAL   = decserial.o
+endif
+
+ifeq ($(CONFIG_BAGET_MIPS),y)
+  KEYBD    =
+  SERIAL   =
+endif
+
+ifeq ($(CONFIG_NINO),y)
+  SERIAL   =
+endif
+
+ifneq ($(CONFIG_SUN_SERIAL),)
+  SERIAL   =
+endif
+
+ifeq ($(CONFIG_QTRONIX_KEYBOARD),y)
+  KEYBD    = qtronix.o
+  KEYMAP   = qtronixmap.o
+endif
+
+ifeq ($(CONFIG_DUMMY_KEYB),y)
+  KEYBD = dummy_keyb.o
+endif
+
+obj-$(CONFIG_VT) += vt.o vc_screen.o consolemap.o consolemap_deftbl.o $(CONSOLE) selection.o
+
+ifeq ($(CONFIG_VT),)
+  obj-$(CONFIG_DUMMY_CONSOLE) += $(KEYBD) dummy_console.o
+endif
+
+obj-$(CONFIG_SERIAL) += $(SERIAL)
+obj-$(CONFIG_SERIAL_HCDP) += hcdp_serial.o
+obj-$(CONFIG_SERIAL_21285) += serial_21285.o
+obj-$(CONFIG_SERIAL_SA1100) += serial_sa1100.o
+obj-$(CONFIG_SERIAL_AMBA) += serial_amba.o
+obj-$(CONFIG_TS_AU1000_ADS7846) += au1000_ts.o
+
+ifndef CONFIG_SUN_KEYBOARD
+  obj-$(CONFIG_VT) += keyboard.o $(KEYMAP) $(KEYBD)
+else
+  obj-$(CONFIG_PCI) += keyboard.o $(KEYMAP)
+endif
+
+obj-$(CONFIG_HIL) += hp_keyb.o
+obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
+obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
+obj-$(CONFIG_ROCKETPORT) += rocket.o
+obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
+obj-$(CONFIG_MOXA_INTELLIO) += moxa.o
+obj-$(CONFIG_DIGI) += pcxx.o
+obj-$(CONFIG_DIGIEPCA) += epca.o
+obj-$(CONFIG_CYCLADES) += cyclades.o
+obj-$(CONFIG_STALLION) += stallion.o
+obj-$(CONFIG_ISTALLION) += istallion.o
+obj-$(CONFIG_SIBYTE_SB1250_DUART) += sb1250_duart.o
+obj-$(CONFIG_COMPUTONE) += ip2.o ip2main.o
+obj-$(CONFIG_RISCOM8) += riscom8.o
+obj-$(CONFIG_ISI) += isicom.o
+obj-$(CONFIG_ESPSERIAL) += esp.o
+obj-$(CONFIG_SYNCLINK) += synclink.o
+obj-$(CONFIG_SYNCLINKMP) += synclinkmp.o
+obj-$(CONFIG_N_HDLC) += n_hdlc.o
+obj-$(CONFIG_SPECIALIX) += specialix.o
+obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
+obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
+obj-$(CONFIG_SX) += sx.o generic_serial.o
+obj-$(CONFIG_RIO) += rio/rio.o generic_serial.o
+obj-$(CONFIG_SH_SCI) += sh-sci.o generic_serial.o
+obj-$(CONFIG_SERIAL167) += serial167.o
+obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_HVC_CONSOLE) += hvc_console.o
+obj-$(CONFIG_SERIAL_TX3912) += generic_serial.o serial_tx3912.o
+obj-$(CONFIG_TXX927_SERIAL) += serial_txx927.o
+
+subdir-$(CONFIG_RIO) += rio
+subdir-$(CONFIG_INPUT) += joystick
+
+obj-$(CONFIG_ATIXL_BUSMOUSE) += atixlmouse.o
+obj-$(CONFIG_LOGIBUSMOUSE) += logibusmouse.o
+obj-$(CONFIG_PRINTER) += lp.o
+obj-$(CONFIG_TIPAR) += tipar.o
+
+ifeq ($(CONFIG_INPUT),y)
+obj-y += joystick/js.o
+endif
+
+obj-$(CONFIG_BUSMOUSE) += busmouse.o
+obj-$(CONFIG_DTLK) += dtlk.o
+obj-$(CONFIG_R3964) += n_r3964.o
+obj-$(CONFIG_APPLICOM) += applicom.o
+obj-$(CONFIG_SONYPI) += sonypi.o
+obj-$(CONFIG_MS_BUSMOUSE) += msbusmouse.o
+obj-$(CONFIG_82C710_MOUSE) += qpmouse.o
+obj-$(CONFIG_AMIGAMOUSE) += amigamouse.o
+obj-$(CONFIG_ATARIMOUSE) += atarimouse.o
+obj-$(CONFIG_ADBMOUSE) += adbmouse.o
+obj-$(CONFIG_PC110_PAD) += pc110pad.o
+obj-$(CONFIG_MK712_MOUSE) += mk712.o
+obj-$(CONFIG_RTC) += rtc.o
+obj-$(CONFIG_EFI_RTC) += efirtc.o
+ifeq ($(CONFIG_PPC),)
+  obj-$(CONFIG_NVRAM) += nvram.o
+endif
+obj-$(CONFIG_TOSHIBA) += toshiba.o
+obj-$(CONFIG_I8K) += i8k.o
+obj-$(CONFIG_DS1620) += ds1620.o
+obj-$(CONFIG_INTEL_RNG) += i810_rng.o
+obj-$(CONFIG_AMD_RNG) += amd768_rng.o
+obj-$(CONFIG_AMD_PM768) += amd76x_pm.o
+
+obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
+obj-$(CONFIG_AU1000_GPIO) += au1000_gpio.o
+obj-$(CONFIG_COBALT_LCD) += lcd.o
+
+obj-$(CONFIG_QIC02_TAPE) += tpqic02.o
+
+subdir-$(CONFIG_FTAPE) += ftape
+subdir-$(CONFIG_DRM_OLD) += drm-4.0
+subdir-$(CONFIG_DRM_NEW) += drm
+subdir-$(CONFIG_PCMCIA) += pcmcia
+subdir-$(CONFIG_AGP) += agp
+
+ifeq ($(CONFIG_FTAPE),y)
+obj-y       += ftape/ftape.o
+endif
+
+obj-$(CONFIG_H8) += h8.o
+obj-$(CONFIG_PPDEV) += ppdev.o
+obj-$(CONFIG_DZ) += dz.o
+obj-$(CONFIG_NWBUTTON) += nwbutton.o
+obj-$(CONFIG_NWFLASH) += nwflash.o
+obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o scx200.o
+
+# Only one watchdog can succeed. We probe the hardware watchdog
+# drivers first, then the softdog driver.  This means if your hardware
+# watchdog dies or is 'borrowed' for some reason the software watchdog
+# still gives you some cover.
+
+obj-$(CONFIG_PCWATCHDOG) += pcwd.o
+obj-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o
+obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o
+obj-$(CONFIG_IB700_WDT) += ib700wdt.o
+obj-$(CONFIG_MIXCOMWD) += mixcomwd.o
+obj-$(CONFIG_60XX_WDT) += sbc60xxwdt.o
+obj-$(CONFIG_W83877F_WDT) += w83877f_wdt.o
+obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
+obj-$(CONFIG_WDT) += wdt.o
+obj-$(CONFIG_WDTPCI) += wdt_pci.o
+obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
+obj-$(CONFIG_977_WATCHDOG) += wdt977.o
+obj-$(CONFIG_I810_TCO) += i810-tco.o
+obj-$(CONFIG_MACHZ_WDT) += machzwd.o
+obj-$(CONFIG_SH_WDT) += shwdt.o
+obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o
+obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o
+#obj-$(CONFIG_ALIM1535_WDT) += alim1535d_wdt.o
+obj-$(CONFIG_INDYDOG) += indydog.o
+obj-$(CONFIG_SC1200_WDT) += sc1200wdt.o
+obj-$(CONFIG_SCx200_WDT) += scx200_wdt.o
+obj-$(CONFIG_WAFER_WDT) += wafer5823wdt.o
+obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
+obj-$(CONFIG_AMD7XX_TCO) += amd7xx_tco.o
+
+subdir-$(CONFIG_MWAVE) += mwave
+ifeq ($(CONFIG_MWAVE),y)
+  obj-y += mwave/mwave.o
+endif
+
+subdir-$(CONFIG_IPMI_HANDLER) += ipmi
+ifeq ($(CONFIG_IPMI_HANDLER),y)
+  obj-y += ipmi/ipmi.o
+endif
+
+include $(TOPDIR)/Rules.make
+
+fastdep:
+
+conmakehash: conmakehash.c
+       $(HOSTCC) $(HOSTCFLAGS) -o conmakehash conmakehash.c
+
+consolemap_deftbl.c: $(FONTMAPFILE) conmakehash
+       ./conmakehash $(FONTMAPFILE) > consolemap_deftbl.c
+
+consolemap_deftbl.o: consolemap_deftbl.c $(TOPDIR)/include/linux/types.h
+
+.DELETE_ON_ERROR:
+
+defkeymap.c: defkeymap.map
+       set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
+
+qtronixmap.c: qtronixmap.map
+       set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
diff --git a/xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c b/xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c
new file mode 100644 (file)
index 0000000..0d0f7b9
--- /dev/null
@@ -0,0 +1,37 @@
+// This file is unashamed hackery to allow keyboard support without console/vt support.  
+// It could be made more useful by linking sysrq in somehow..
+// But right now its just for testing keyboard functionality in Xen while console functionality is not yet implemented.
+
+#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/sched.h>
+#include <linux/tty.h>
+#include <linux/tty_flip.h>
+#include <linux/mm.h>
+#include <linux/string.h>
+#include <linux/random.h>
+#include <linux/init.h>
+
+#include <asm/keyboard.h>
+#include <asm/bitops.h>
+
+#include <linux/kbd_kern.h>
+#include <linux/kbd_diacr.h>
+#include <linux/vt_kern.h>
+#include <linux/kbd_ll.h>
+#include <linux/sysrq.h>
+#include <linux/pm.h>
+
+
+static void kbd_bh(unsigned long dummy)
+{
+}
+
+EXPORT_SYMBOL(keyboard_tasklet);
+DECLARE_TASKLET_DISABLED(keyboard_tasklet, kbd_bh, 0);
+
+int (*kbd_rate)(struct kbd_repeat *rep);
+
+int __init kbd_init(void) {
+  kbd_init_hw();
+}
index de339ba297abf36be699b8f6e034f0a2480dbc0a..8f7e08bc94a792abbe8b018f3fee062e49a4cb24 100644 (file)
@@ -2358,6 +2358,11 @@ void __init tty_init(void)
                panic("Couldn't register /dev/tty0 driver\n");
 
        kbd_init();
+#else
+       // the below is a dodgy hack to allow keyboard/mouse support without the console support, along with the file "dummy_console.c"
+#ifdef CONFIG_DUMMY_CONSOLE
+       kbd_init();
+#endif
 #endif
 
 #ifdef CONFIG_ESPSERIAL  /* init ESP before rs, so rs doesn't see the port */
index b7dfb52e204e186915cf7b0cf30c47436a230a81..935ea3a6ef9b22e15909319719315bca880fadb7 100644 (file)
@@ -353,4 +353,16 @@ static inline int HYPERVISOR_multicall(void *call_list, int nr_calls)
     return ret;
 }
 
+
+static inline long HYPERVISOR_kbd_op(unsigned char op, unsigned char val)
+{
+    int ret;
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret) : "0" (__HYPERVISOR_kbd_op),
+        "b" (op), "c" (val) );
+
+    return ret;
+}
+
 #endif /* __HYPERVISOR_H__ */
diff --git a/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/keyboard.h b/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/keyboard.h
new file mode 100644 (file)
index 0000000..263aa59
--- /dev/null
@@ -0,0 +1,95 @@
+/* xenolinux/include/asm-xeno/keyboard.h */
+/* Portions copyright (c) 2003 James Scott, Intel Research Cambridge */
+/* Talks to hypervisor to get PS/2 keyboard and mouse events, and send keyboard and mouse commands */
+
+/*  Based on:
+ *  linux/include/asm-i386/keyboard.h
+ *
+ *  Created 3 Nov 1996 by Geert Uytterhoeven
+ */
+
+#ifndef _XENO_KEYBOARD_H
+#define _XENO_KEYBOARD_H
+
+#ifdef __KERNEL__
+
+#include <linux/kernel.h>
+#include <linux/ioport.h>
+#include <linux/kd.h>
+#include <linux/pm.h>
+#include <asm/io.h>
+
+
+#define KEYBOARD_IRQ _EVENT_KBD
+#define AUX_IRQ _EVENT_KBD
+
+/* THIS SECTION RELATIVELY UNTOUCHED */
+
+extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
+extern int pckbd_getkeycode(unsigned int scancode);
+extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
+                          char raw_mode);
+extern char pckbd_unexpected_up(unsigned char keycode);
+extern void pckbd_leds(unsigned char leds);
+extern void pckbd_init_hw(void);
+extern int pckbd_pm_resume(struct pm_dev *, pm_request_t, void *);
+
+extern pm_callback pm_kbd_request_override;
+extern unsigned char pckbd_sysrq_xlate[128];
+
+#define kbd_setkeycode         pckbd_setkeycode
+#define kbd_getkeycode         pckbd_getkeycode
+#define kbd_translate          pckbd_translate
+#define kbd_unexpected_up      pckbd_unexpected_up
+#define kbd_leds               pckbd_leds
+#define kbd_init_hw            pckbd_init_hw
+#define kbd_sysrq_xlate                pckbd_sysrq_xlate
+
+#define SYSRQ_KEY 0x54
+
+
+/* THIS SECTION TALKS TO XEN TO DO PS2 SUPPORT */
+#include <asm/hypervisor-ifs/kbd.h>
+#include <asm/hypervisor-ifs/hypervisor-if.h>
+
+/* resource allocation */
+#define kbd_request_region() do { } while (0)
+#define kbd_request_irq(handler) request_irq(_EVENT_KBD, handler, 0, "PS/2 kbd", NULL)
+
+// could implement these with command to xen to filter mouse stuff...
+#define aux_request_irq(hand, dev_id) 0
+#define aux_free_irq(dev_id) do { } while(0)
+
+/* Some stoneage hardware needs delays after some operations.  */
+#define kbd_pause() do { } while(0)
+
+
+static unsigned char kbd_current_scancode = 0;
+
+static unsigned char kbd_read_input(void) 
+{
+  //printk("kbd_read_input: returning scancode 0x%2x\n", kbd_current_scancode);
+  return kbd_current_scancode;
+}
+
+static unsigned char kbd_read_status(void) 
+{
+  long res;
+  res = HYPERVISOR_kbd_op(KBD_OP_READ,0);
+  if(res<0) {
+    //printk("kbd_read_status: error from hypervisor: %d", res);
+    kbd_current_scancode = 0;
+    return 0; // error with our request - wrong domain?
+  }
+  kbd_current_scancode = KBD_CODE_SCANCODE(res);
+  //printk("kbd_read_status: returning status 0x%2x\n", KBD_CODE_STATUS(res));
+  return KBD_CODE_STATUS(res);
+}
+
+
+#define kbd_write_output(val)  HYPERVISOR_kbd_op(KBD_OP_WRITEOUTPUT, val);
+#define kbd_write_command(val) HYPERVISOR_kbd_op(KBD_OP_WRITECOMMAND, val);
+
+
+#endif /* __KERNEL__ */
+#endif /* _XENO_KEYBOARD_H */
index 211c1e170d14ebd5097a71f232b634a2a01c72d3..8749150889a58a199bf747335838cc408d92a9f3 100755 (executable)
@@ -56,7 +56,6 @@ ln -sf ../asm-i386/ioctl.h
 ln -sf ../asm-i386/ioctls.h
 ln -sf ../asm-i386/ipcbuf.h
 ln -sf ../asm-i386/ipc.h 
-ln -sf ../asm-i386/keyboard.h
 ln -sf ../asm-i386/kmap_types.h
 ln -sf ../asm-i386/ldt.h 
 ln -sf ../asm-i386/linux_logo.h